home *** CD-ROM | disk | FTP | other *** search
/ Atari Forever 4 / Atari Forever 4.zip / Atari Forever 4.iso / PD_THEMA / EDITOREN / 7UP_PD / VAPROTO.H1 < prev    next >
Text File  |  1998-03-14  |  10KB  |  263 lines

  1. /*
  2.  * vaproto.h
  3.  *
  4.  * project: venus
  5.  *
  6.  * author: stefan eissing
  7.  *
  8.  * description: Definition der Nachrichten des Venus <-> Accessory
  9.  * Protokolls
  10.  *
  11.  * last change: 16.4.1991
  12.  */
  13.  
  14. #ifndef __vaproto__
  15. #define __vaproto__
  16.  
  17. #define    AP_TERM    50
  18.  
  19. /* Message-Nummern für das xAcc-Protokoll von Konrad Hinsen
  20.  * Venus gibt bei ACC_ID "VENUS.APP" und Gemini gibt "GEMINI.APP"
  21.  * zurück. Gemini unterstützt xAcc der Stufe 0.
  22.  */
  23. #define ACC_ID        0x400
  24. #define ACC_OPEN    0x401
  25. #define ACC_CLOSE    0x402
  26. #define ACC_ACC        0x403
  27.  
  28. /* Message-Nummern für die Kommunikation zwischen Venus und
  29.  * verschiedenen Accesories.
  30.  * Sollten in Nachrichten Pfade oder Dateinamen vorkommen, so
  31.  * muß immer der absolute Pfad angegeben werden (also mit Laufwerk)
  32.  * und alle Buchstaben müssen Großbuchstaben sein. Pfade enden
  33.  * IMMER mit einem Backslash!
  34.  *
  35.  * Nachrichten von Venus beginnen mit VA (Venus -> Accessory).
  36.  * Nachrichten an Venus beginnen mit AV (Accessory -> Venus).
  37.  *
  38.  * Mit AV_PROTOKOLL kann jedes Acc nachfragen, welche Nachrichten
  39.  * verstanden werden (Dies ist ja bei VENUS und GEMINI 
  40.  * unterschiedlich! Es wäre schön, wenn auch andere Programme auf
  41.  * dieses Protokoll reagieren würden. Zumindest AV_SENDKEY ist
  42.  * sicher leicht zu implementieren und ist die einzige Methode, wie
  43.  * über Nachrichten Tastaturdrücke simuliert werden können.
  44.  */
  45.  
  46. /* AV_PROTOKOLL: Mit dieser Nachrichtennummer sollte man bei 
  47.  * anderen Applikationen und auch VENUS/GEMINI nachfragen, ob
  48.  * und welche Nachrichten sie versteht.
  49.  */
  50. #define AV_PROTOKOLL        0x4700
  51. /*
  52.  * Word 6+7: Pointer auf den Accessorynamen, wie er bei
  53.  *           appl_find benutzt werden muß; also 8 Zeichen lang
  54.  *           nullterminiert (char name[9]).
  55.  * Die Bits in den Worten 3, 4 und 5 haben folgende Bedeutung:
  56.  * Word 3:
  57.  * Bit 0:        (VA_SETSTATUS)
  58.  * Bit 1:        (VA_START)
  59.  * Alle anderen Bits sind für Erweiterungen reserviert und sollten
  60.  * daher mit 0 vorbesetzt werden. Das gilt natürlich auch für die
  61.  * Bits in den Worten 4 und 5.
  62.  */
  63.  
  64. /* VA_PROTOSTATUS: Dem Sender von AV_PROTOKOLL wird mitgeteilt, daß
  65.  * der Empfänger etwas von diesem Protokoll weiß. Die Worte 3-7 des
  66.  * Nachrichtenpuffers enthalten die Information, welche Nachrichten
  67.  * verstanden werden. Gesetzte Bits stehen dafür, daß eine Nachricht
  68.  * (Nachrichtengruppe) verstanden werden. 
  69.  */
  70. #define VA_PROTOSTATUS        0x4701
  71. /*
  72.  * Word 6+7: Pointer auf den Programmnamen, wie er bei
  73.  *           appl_find benutzt werden muß; also 8 Zeichen lang
  74.  *           nullterminiert (char name[9]).
  75.  * Die Bits in den Worten 3, 4 und 5 haben folgende Bedeutung:
  76.  * Word 3:
  77.  * Bit 0        (AV_SENDKEY)
  78.  * Bit 1        (AV_ASKFILEFONT)
  79.  * Bit 2        (AV_ASKCONFONT, AV_OPENCONSOLE)
  80.  * Bit 3        (AV_ASKOBJECT)
  81.  * Bit 4        (AV_OPENWIND)
  82.  * Bit 5        (AV_STARTPROG)
  83.  * Bit 6        (AV_ACCWINDOPEN, AV_ACCWINDCLOSED)
  84.  * Bit 7        (AV_STATUS, AV_GETSTATUS)
  85.  * Bit 8       (AV_COPY_DRAGGED)
  86.  * Alle anderen Bits sind für Erweiterungen reserviert und sollten
  87.  * daher mit 0 vorbesetzt werden. Das gilt natürlich auch für die
  88.  * Bits in den Worten 4 und 5.
  89.  *
  90.  * AV_SENDKEY kann sicher jeder leicht in seine Programme einbauen.
  91.  * Bei AV_OPENWIND könnte ein Hauptprogramm auch seine "normale"
  92.  * Routine zum Öffnen eines Dokumentes anwerfen und dabei den
  93.  * übergebenen Pfad benutzen. Dies ist zusammen mit der Benutzung
  94.  * von TreeView sicher eine einfache Art, Dateien aus anderen Ordnern
  95.  * oder Laufwerken zu laden.
  96.  */
  97.  
  98. /* AV_GETSTATUS: Ein Accessory erfragt bei Venus den aktuellen
  99.  * Status, den es Venus mit AV_STATUS mal gegeben hat.
  100.  */
  101. #define AV_GETSTATUS        0x4703
  102.  
  103. /* AV_STATUS: Ein Accessory kann Venus seinen Status mitteilen,
  104.  * der dann von Venus im INF-File gespeichert wird und mit
  105.  * AV_GETSTATUS wieder abgerufen werden kann.
  106.  * Zuvor MUSS es sich aber mit AV_PROTOKOLL anmelden!
  107.  * Word 3+4: Pointer auf einen String, der keine Steuerzeichen
  108.  *           enthalten darf und nicht länger als 256 Zeichen
  109.  *           sein darf. Dieser Pointer darf allerdings NULL sein.
  110.  */
  111. #define AV_STATUS            0x4704
  112.  
  113. /* VA_SETSTATUS: Venus teilt dem Accessory den abgespeicherten
  114.  * Status bei Nachfrage durch AV_GETSTATUS mit. Dieser kann dann 
  115.  * von einem Accessory gesetzt werden.
  116.  * Word 3+4: Pointer auf einen String, der keine Steuerzeichen
  117.  *           enthält.
  118.  *           Dieser Pointer kann allerdings NULL sein, dann war
  119.  *           kein Status gespeichert.
  120.  */
  121. #define VA_SETSTATUS        0x4705
  122.  
  123. /* AV_SENDKEY: Ein Acc sendet VENUS/GEMINI einen Tastaturevent, den
  124.  * es selber vielleicht nicht versteht.
  125.  * Word 3 = Tastaturstatus                 ev_mmokstate
  126.  * Word 4 = Scancode der gedrückten Taste  ev_mkreturn
  127.  */
  128. #define    AV_SENDKEY            0x4710
  129.  
  130. /* VA_START: Accessory wird aktiviert. Word 3 + 4 enthalten einen
  131.  * Pointer auf eine Kommandozeile, der auch NULL sein kann.
  132.  * In der Kommandozeile stehen Pfade oder Dateinamen.
  133.  */
  134. #define VA_START            0x4711
  135.  
  136. /* AV_ASKFILEFONT: Frage nach dem eingestellten Zeichensatz
  137.  * für Dateinamen.
  138.  */
  139. #define AV_ASKFILEFONT        0x4712
  140.  
  141. /* VA_FILEFONT: Gibt den derzeit eingestellten Zeichensatz.
  142.  * Word 3 = Dateifontnummer (font id)
  143.  * Word 4 = Dateifontgröße (in points)
  144.  */
  145. #define VA_FILEFONT            0x4713
  146.  
  147. /* (Nur Gemini) AV_ASKCONFONT: Frage nach dem eingestellten 
  148.  * Zeichensatz für das Console-Fenster.
  149.  */
  150. #define AV_ASKCONFONT        0x4714
  151.  
  152. /* VA_CONFONT: Gibt den derzeit eingestellten Zeichensatz.
  153.  * Word 3 = Consolefontnummer (font id)
  154.  * Word 4 = Consolefontgröße (in points)
  155.  */
  156. #define VA_CONFONT            0x4715
  157.  
  158. /* AV_ASKOBJECT: Fragt nach dem derzeit selektiertem Objekt.
  159.  * Es wird der Name des derzeit selektierten Objektes zurückgegeben.
  160.  * Ist kein Objekt selektiert, so ist der String leer.
  161.  * Sind mehrere Objekte selektiert, so sind ihre Namen durch Leer-
  162.  * zeichen getrennt.
  163.  */
  164. #define AV_ASKOBJECT    0x4716
  165.  
  166. /* VA_OBJECT: Gibt Namen der derzeit selektierten Objekte.
  167.  * Aufbau wie bei VA_START
  168.  */
  169. #define VA_OBJECT        0x4717
  170.  
  171. /* (Nur Gemini)AV_OPENCONSOLE: Venus soll das Console-Fenster öffnen.
  172.  * Ist es schon offen, so wird es nach vorne gebracht. Diese Aktion
  173.  * ist vor allen Dingen sinnvoll, wenn ein Accessory ein TOS-Programm
  174.  * mittels der system()-Funktion starten will (Warnung: Auf keinen
  175.  * Fall darf ein GEM-Programm von einem Accessory via system() 
  176.  * gestartet werden! (siehe auch AV_STARTPROG)
  177.  * Auch sollte diese Nachricht nur auf ausdrücklichen Wunsch des
  178.  * Benutzers gebraucht werden, da es ihn sonst nur verwirren kann.
  179.  *
  180.  * ACHTUNG: Diese Nachricht steht nur in Gemini.app zur Verfügung.
  181.  */
  182. #define AV_OPENCONSOLE    0x4718
  183.  
  184. /* VA_CONSOLEOPEN: Gibt zurück, ob das Console-Fenster nach vorne
  185.  * gebracht worden ist. Word 3 == 0 (nein) != 0 (ja)
  186.  */
  187. #define VA_CONSOLEOPEN    0x4719
  188.  
  189. /* AV_OPENWIND: Venus soll ein Datei-Fenster öffnen.
  190.  * Dies sollte auch nur geschehen, wenn die Ursache für den
  191.  * Benutzer ersichtlich ist.
  192.  * Word 3+4 (Pointer) Pfad für das Fenster (s.o.).
  193.  * Word 5+6 (Pointer) Wildcard für darzustellende Dateien.
  194.  */
  195. #define AV_OPENWIND        0x4720
  196.  
  197. /* VA_WINDOPEN: Gibt an, ob das Fenster geöffnet werden konnte.
  198.  * siehe VA_CONSOLEOPEN
  199.  */
  200. #define VA_WINDOPEN        0x4721
  201.  
  202. /* AV_STARTPROG: Venus soll ein Programm starten. Hierbei
  203.  * werden die angemeldeten Applikationen der Venus mit
  204.  * berücksichtigt. Man kann also auch eine Datei angeben, für
  205.  * die Venus dann ein Programm sucht.
  206.  * Word 3+4 (Pointer) Programmname mit kompletten Pfad
  207.  * Word 5+6 (Pointer) Kommandozeile (kann NULL sein)
  208.  */
  209. #define AV_STARTPROG    0x4722
  210.  
  211. /* VA_PROGSTART: Gibt an, ob Venus das Programm startet.
  212.  * Word 3 == 0: nicht gestartet, != 0 gestartet
  213.  * Im Allgemeinen wird das Acc. im Fehlerfall sofort eine
  214.  * Nachricht bekommen. Wenn das Programm aber gestartet wird, erhält
  215.  * das Acc. diese Nachricht erst nach dem Start des Programms, da
  216.  * die Routine, die den Pexec macht nicht mehr wissen kann, das ein
  217.  * Acc. noch schnell eine Nachricht bekommen muß. Bei einem GEM-
  218.  * Programm, kann man der Erfolg auch an dem AC_CLOSE erkennen.
  219.  * Auch ist die Fehlererkennung nicht optimal. Der Rückgabewert weist
  220.  * auch nicht aus, das das Programm fehlerfrei gelaufen ist.
  221.  */
  222. #define VA_PROGSTART    0x4723
  223.  
  224. /* AV_ACCWINDOPEN: Mit dieser Nachricht kann ein Acc Venus mitteilen, daß
  225.  * es ein Fenster geöffnet hat.
  226.  * Word 3 AES-Handle des geöffneten Fensters
  227.  */
  228. #define AV_ACCWINDOPEN    0x4724
  229.  
  230. /* VA_DRAGACCWIND: Venus teilt dem Acc mit, daß Objekte auf eines seiner
  231.  * mittels AV_ACCWINDOPEN angemeldeten Fenster gezogen worden sind.
  232.  * Word 3   AES-Handle des Fensters
  233.  * Word 4   X-Position der Maus
  234.  * Word 5   Y-Position der Maus
  235.  * Word 6+7 Pointer auf einen String, der die Namen der Objekte enthält.
  236.  */
  237. #define VA_DRAGACCWIND    0x4725
  238.  
  239. /* AV_ACCWINDCLOSED: Acc teilt Venus mit, daß sein Fenster geschlossen
  240.  * wurde. Dies braucht das Acc nur in dem Fall zu tun, wenn es selbst das
  241.  * Fenster schließt. Bekommt es eine AC_CLOSE Mitteilung vom AES, so weiß
  242.  * Venus schon, daß alle Fenster weg sind.
  243.  * Word 3   AES-Handle des Fensters
  244.  */
  245. #define AV_ACCWINDCLOSED    0x4726
  246.  
  247. /* AV_COPY_DRAGGED: Acc teilt Venus mit, das die vorher mittels
  248.  * VA_DRAGACCWIND gedraggten Icons nach Zielpfad kopiert werden
  249.  * sollen.
  250.  * Word 3   Tastaturstatus wie von evnt_multi() erhalten.
  251.  * Word 4+5 Pointer auf String mit Zielpfad
  252.  */
  253. #define AV_COPY_DRAGGED  0x4728
  254.  
  255. /* VA_COPY_COMPLETE: Venus teilt dem Accessorie mit, das der
  256.  * Kopiervorgang, der mit AV_COPY gestartet wurde, beendigt ist.
  257.  * Word 3   0, wenn nichts kopiert wurde
  258.             ungleich 0, wenn etwas kopiert wurde
  259.  */
  260. #define VA_COPY_COMPLETE    0x4729
  261.  
  262. #endif
  263.